/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

/**
 *
 * @author Máté
 */

// jelforrások ősosztálya
public class Source extends Element {

    private Wire output;

    public Source() {
        super(0);
        // kimeneti vezeték
        this.output = new Wire();
        ResetHandler.addWire(this.output);
    }

    public void addOutput(Display display) {
        // kijelző a vezetékhez
        this.output.setDisplay(display);
    }

    public void addOutput(Oscilloscope oscilloscope) {
        this.output.setOscilloscope(oscilloscope);
    }

    public void addOutput(Gate gate) throws Exception {

        if (gate instanceof Port) {
            if (((Port) gate).isOutput()) {
                throw new Exception("Error: Cannot connect two outputs!");
            }
        }

        // a kimeneti vezetékre csatlakozó kapuk
        this.output.addGate(gate);
        gate.getInputs().add(this.output);
    }

    public Wire getOutput() {
        return output;
    }
}
